Các phương pháp số cho điều khiển tối ưu Điều khiển tối ưu

Các bài toán điều khiển tối ưu thường là phi tuyến và do đó, thường không có lời giải phân tích (ví dụ như bài toán điều khiển tối ưu tuyến tính bậc hai). Kết quả là, cần phải áp dụng các phương pháp số để giải các bài toán điều khiển tối ưu. Trong những năm đầu của điều khiển tối ưu (khoảng những năm 1950 tới 1980) hướng tiếp cận ưa thích đối với các bài toán điều khiển tối ưu là các phương pháp gián tiếp. Trong một phương pháp gián tiếp, phép tính biến phân được sử dụng để có được các điều kiện tối ưu bậc nhất. Những điều kiện này đạt được trong một bài toán giá trị-biên hai điểm (hoặc, trong trường hợp của một bài toán phức, đa điểm). Bài toán giá trị-biên này thực sự có một cấu trúc đặc biệt bởi vì nó phát sinh từ việc lấy đạo hàm của một hàm Hamilton. Vì vậy, kết quả là hệ thống động học là một hệ thống Hamilton có dạng

x ˙ = ∂ H / ∂ λ λ ˙ = − ∂ H / ∂ x {\displaystyle {\begin{array}{lcl}{\dot {\textbf {x}}}&=&\partial H/\partial {\boldsymbol {\lambda }}\\{\dot {\boldsymbol {\lambda }}}&=&-\partial H/\partial {\textbf {x}}\end{array}}}

Trong đó

H = L + λ T a − μ T b {\displaystyle H={\mathcal {L}}+{\boldsymbol {\lambda }}^{\text{T}}{\textbf {a}}-{\boldsymbol {\mu }}^{\text{T}}{\textbf {b}}}

là Hamilton tăng cường và trong một phương pháp gián tiếp, bài toán giá trị-biên sẽ được giải (sử dụng biên thích hợp hoặc các điều kiện gác ngang). Vẻ đẹp của việc sử dụng một phương pháp gián tiếp là trạng thái và liên hợp (cụ thể, λ {\displaystyle {\boldsymbol {\lambda }}} ) sẽ được giải và lời giải cuối cùng sẽ được kiểm tra để trở thành quỹ đạo cực trị. Nhược điểm của các phương pháp gián tiếp là bài toán giá trị-biên thường rất khó để giải (đặc biệt đối với các bài toán mở rộng trong khoảng thời gian lớn hoặc các bài toán với các giới hạn điểm bên trong). Một chương trình phần mềm nổi tiếng thực hiện các phương pháp gián tiếp đó là BNDSCO.[4]

Cách tiếp cận này đã làm tăng sự nổi bật trong điều khiển tối ưu phương pháp số hơn hai thập kỷ qua (tức là, từ những năm 1980 đến nay) của cái gọi là các phương pháp trực tiếp. Trong một phương pháp trực tiếp, trạng thái và/hoặc điều khiển được xấp xỉ bằng cách sử dụng một xấp xỉ hàm thích hợp (ví dụ, xấp xỉ đa thức hoặc thông số hóa hằng số từng mảnh). Đồng thời, chi phí chức năng được xấp xỉ như là một hàm chi phí. Sau đó, các hệ số của các xấp xỉ hàm được xử lý như các biến tối ưu hóa và bài toán này được "sao chép lại" cho một bài toán tối ưu hóa phi tuyến có dạng:

Cực tiểu hóa

F ( z ) {\displaystyle F({\textbf {z}})\,}

tùy theo các ràng buộc đại số

g ( z ) = 0 h ( z ) ≤ 0 {\displaystyle {\begin{array}{lcl}{\textbf {g}}({\textbf {z}})&=&{\textbf {0}}\\{\textbf {h}}({\textbf {z}})&\leq &{\textbf {0}}\end{array}}}

Tùy thuộc vào loại phương pháp trực tiếp nào được áp. áp dụng, kích thước của bài toán tối ưu hóa phi tuyến có thể khá nhỏ (ví dụ, trong phương pháp xấp xỉ tuyến tính hóa hoặc direct shooting), trung bình (ví dụ điều khiển tối ưu pseudospectral[5]) hoặc có có thể khá lớn (Ví dụ, phương pháp sắp xếp trực tiếp[6]). Trong trường hợp cuối cùng (ví dụ, là một phương pháp sắp xếp), bài toán tối ưu hóa phi tuyến có nghĩa là hàng ngàn đến hàng chục ngàn biến và hạn chế. Do kích thước của nhiều NLP phát sinh từ một phương pháp trực tiếp, có vẻ phần nào khác thường để giải bài toán tối ưu hóa phi tuyến là dễ hơn so với giải bài toán giá trị-biên. Tuy nhiên, thực tế NLP dễ giải hơn bài toán giá trị-biên.Để giảm bớt tính toán, đặc biệt là phương pháp sắp xếp trực tiếp, NLP là rất ít và rất nhiều các chương trình phần mềm nổi tiếng tồn tại (ví dụ, SNOPT[7]) để giải các bài toán NLP lớn. Kết quả là phạm vi của các bài toán có thể được giải quyết thông qua các phương pháp trực tiếp (đặc biệt là các phương pháp sắp xếp trực tiếp là rất phổ biến hiện nay) là lớn hơn đáng kể so với phạm vi của các bài toán có thể được giải bằng các phương pháp gián tiếp. Trong thực tế, các phương pháp trực tiếp đã trở nên quá phổ biến hiện nay đến nỗi nhiều người đã viết các chương trình phần mềm phức tạp sử dụng những phương pháp này. Đặc biệt, rất nhiều các chương trình như vậy bao gồm DIRCOL,[8] SOCS,[9] OTIS,[10] GESOP/ASTOS,[11] DITAN.[12] và PyGMO/PyKEP.[13] Những năm gần đây, do sự ra đời của ngôn ngữ lập trình MATLAB, phần mềm điều khiển tối ưu trong MATLAB đã trở nên phổ biến hơn. Ví dụ về phát triển hàn lâm các công cụ cho phần mềm MATLAB đang triển khai thực hiện các phương pháp trực tiếp bao gồmRIOTS,[14]DIDO,[15] DIRECT,[16]GPOPS Lưu trữ 2011-07-24 tại Wayback Machine,[17] một ví dụ công cụ công nghiệp được phát triển cho MATLAB là PROPT.[18] Những công cụ phần mềm này đã tăng đáng kể cơ hội cho mọi người khám phá những bài toán điều khiển tối ưu phức tạp cả cho nghiên cứu hàn lâm và cả công nghiệp. Cuối cùng, cần ghi nhận rằng các môi trường tối ưu hóa MATLAB đa năng như TOMLAB đã thực hiện mã hóa bài toán điều khiển tối ưu phức tạp dễ dàng hơn đáng kể so với các ngôn ngữ như C, FORTRAN trước đây.